3
3
.
.
1
1
.
.
1
1
0
0
L
L
o
o
g
g
4
4
j
j
-
-
C
C
o
o
n
n
f
f
i
i
g
g
u
u
r
r
e
e
-
-
P
P
r
r
o
o
p
p
e
e
r
r
t
t
i
i
e
e
s
s
I
I
n
n
f
f
o
o
[
[
G
G
]
]
[
[
R
R
]
]
This tutorial shows how to configure Log4j by creating log4j2.properties file inside resources Directory.
Application Schema [Results]
Spring Boot Starters
GROUP
DEPENDENCY
DESCRIPTION
Web
Spring Web
Enables: @RequestMapping, Tomcat Server
P
P
r
r
o
o
c
c
e
e
d
d
u
u
r
r
e
e
Create Project: springboot_log_log4j_config_properties (add Spring Boot Starters from the table)
Edit File: pom.xml (add Log4j dependencies, exclude default logging)
Create File: log4j2.properties (inside resources directory )
Create Package: controllers (inside main package)
– Create Class: MyController.java (inside controllers package)
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
hello()
MyController
http://localhost:8080/Hello
Browser
log4j2.properties
log4j2.properties
# CONSOLE APPENDER
appender.MyConsoleAppender.type = Console
appender.MyConsoleAppender.name = MyConsoleAppenderName
# FILE APPENDER
appender.MyFileAppender.type = File
appender.MyFileAppender.name = MyFileAppenderName
appender.MyFileAppender.fileName = logs/File.log
appender.MyFileAppender.layout.type = PatternLayout
appender.MyFileAppender.layout.pattern = My File Appender: %d %p %c{2} %m %n
# ROLLING FILE APPENDER
appender.rolling.type = RollingFile
appender.rolling.name = MyRollingFileAppenderName
appender.rolling.fileName = logs/RollingFile.log
appender.rolling.filePattern = logs/archived/RollingFile_%d{dd.MM.yyyy}_%i.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size = 1KB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 20
# LOGERS
logger.MyLogger1.name = com.ivoronline.springboot_log_log4j_config_properties.controllers
logger.MyLogger1.level = info
logger.MyLogger1.appenderRef.myappender1.ref = MyConsoleAppenderName
logger.MyLogger1.appenderRef.myappender2.ref = MyFileAppenderName
logger.MyLogger1.appenderRef.myappender3.ref = MyRollingFileAppenderName
# DISABLE ROOT LOGGER
rootLogger.level
MyController.java
package com.ivoronline.springboot_log_log4j_config_properties.controllers;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class MyController {
Logger log = LoggerFactory.getLogger(MyController.class);
@ResponseBody
@RequestMapping("/Hello")
public String hello() {
log.error("Some error occured");
log.warn ("Some warn occured");
log.info ("Some info occured");
log.debug("Some debug occured");
log.trace("Some trace occured");
return "Hello from Controller";
}
}
R
R
e
e
s
s
u
u
l
l
t
t
s
s
http://localhost:8080/Hello
Console
Some error occured
Some warn occured
Some info occured
logs/app.log (My File Appender: %d %p %c{2} %m %n)
My File Appender: 2021-03-16 21:56:24,216 ERROR controllers.MyController Some error occured
My File Appender: 2021-03-16 21:56:24,219 WARN controllers.MyController Some warn occured
My File Appender: 2021-03-16 21:56:24,220 INFO controllers.MyController Some info occured
Application Structure
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>